//
//  LBOSSService.h
//  app
//
//  Created by 杨庆人 on 16/8/8.
//  Copyright © 2016年 广东联结电子商务有限公司. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <AliyunOSSiOS/OSSService.h>
#import "LBService.h"
//上传文件类型 (持续更新中)0：常用、1：头像(无水印)、2：身份证、3：资源、301：企业logo(无水印)、302：企业相册(无水印)、4：招投标(公开)、401：招投标相册(无水印)、5：招投标(私密)、6：报价汇总、7：财务(线下汇款图片)、8：发接任务(公开)、9：常用(无水印)、101：首页banner(无水印)、102：新闻(无水印)、103：广告(无水印) 303:定制采购 1001 :商品根目录 1002 ：商品二维码 1003:商品展示图片,305:个人入驻图片

typedef NS_ENUM(NSInteger,LBServiceOSSCode) {
    // 常用
    LBServiceOSSCodeLBCommon = 0,
    // 头像（无水印）
    LBServiceOSSCodeIcon = 1,
    // 身份证
    LBServiceOSSCodeIdentityCards = 2,
    
    // 资源
    LBServiceOSSCodeResources = 3,
    // 企业logo（无水印）
    LBServiceOSSCodeCompanyLogo = 301,
    // 企业相册（无水印）
    LBServiceOSSCodeCompanyAlbum = 302,
    
    // 个人入驻图片
    LBServiceOSSCodePersonalEntry = 305,

    // 招投标(公开)
    LBServiceOSSCodeBiddingPublic = 5001,
    // 招投标相册(无水印)
    LBServiceOSSCodeBiddingAlbum = 401,
    
    // 招投标(私密)
    LBServiceOSSCodeBiddingPrivate = 5002,
    // 报价汇总
    LBServiceOSSCodeQuotation = 6,
    // 财务(线下汇款图片)
    LBServiceOSSCodeLineRemittance = 7,
    // 接发任务(公开)
    LBServiceOSSCodeTask = 8,
    
    // 常用(无水印)
    LBServiceOSSCodeCommon = 9,
    
    // 招应聘
    LBServiceOSSCodeJob = 10,
    
    // 首页banner(无水印)
    LBServiceOSSCodeBanner = 101,
    // 新闻(无水印)
    LBServiceOSSCodeNew = 102,
    // 广告(无水印)
    LBServiceOSSCodeAdv = 103,
    
    // 定制采购
    LBServiceOSSCodeOrder = 303,
    // 商品根目录
    LBServiceOSSCodeGoodsDirectories = 1001,
    // 商品二维码
    LBServiceOSSCodeGoodsQRCode = 1002,
    // 商品展示图片
    LBServiceOSSCodeGoodsGoodsShow = 1003,
    
    // 联结小蜜
    LBServiceOSSCodeLBHoneybee = 2001
};


static NSString *const LBOSSContentTypePNG = @"png";
static NSString *const LBOSSContentTypeJPG = @"jpg";

@interface LBServiceOSSModel : NSObject
// STS 授权账号
@property (nonatomic,copy)NSString * accessKeyId;
// STS 授权密钥
@property (nonatomic,copy)NSString * accessKeySecret;
// 存储的BUCKET名称
@property (nonatomic,copy)NSString * bucket;
// 存储的文件夹名称，可能是多级的文件夹
@property (nonatomic,copy)NSString * dir;
// 服务器地址
@property (nonatomic,copy)NSString * endpoint;
// 过期时间
@property (nonatomic,copy)NSString * expiration;
// STS 授权TOKEN
@property (nonatomic,copy)NSString * securityToken;

@end


@interface LBOSSService : NSObject


/**
 OSS上传文件

 @param data 文件
 @param fileType 服务器文件类型
 @param contentType 自命名文件名称
 @param progressBlock
 @param uploadSuccess
 @param getUrlSuccess
 @param failure
 */
+ (void)getOSSUploadDataWithFile:(NSData *)data
                        fileType:(LBServiceOSSCode)fileType
                     contentType:(NSString *)contentType
                   progressBlock:(void(^)(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend))progressBlock
                   uploadSuccess:(void(^)(NSString * objectKey))uploadSuccess
                   getUrlSuccess:(void(^)(NSString * UrlString))getUrlSuccess
                         failure:(void(^)(NSError * error,NSString *message))failure;




/**
 
 * 通过objectKey获取url
 
 */

+ (void)getImageUrlWithObjectKey:(NSString *)objectKey
                         Success:(void(^)(NSString * imageUrl))success
                         failure:(void(^)(NSString * message))failure;



/**
 同步图片Token鉴黄

 @param objectKey
 @param success
 @param failure
 */
+ (void)syncPictureIdentificationYellowWithObjectKey:(NSString *)objectKey success:(void(^)(void))success failure:(void(^)(NSString * msg))failure;

/**
 文件预览(注：只支持doc和Excel文件预览)

 @param sign 签名
 @param suffix 后缀
 @param timestamp 时间戳
 @param url 文件路径
 @param success html内容
 @param failure
 */
+ (void)filePreviewWithSign:(NSString *)sign suffix:(NSString *)suffix timestamp:(NSString *)timestamp url:(NSString *)url success:(void(^)(NSString * result))success failure:(void(^)(NSString * message))failure;


/**
 *  上传数据到oss
 *
 *  @param data            二进制数据
 *  @param dataName        key
 *  @param AccessKeyId     授权id
 *  @param AccessKeySecret 授权secret
 *  @param SecurityToken   加密token
 *  @param bucketName      bucket名字
 *  @param contentType     内容类型
 
 *  @param endpoint        新增的服务器地址
 
 *  @param success         成功回调
 *  @param failure         失败回调
 */

/**
 *  上传数据到oss，新版进度条回调
 *
 *  @param progressBlock   新增的上传进度
 
 */
+(void)uploadOSSWithData:(NSData *)data
               objectKey:(NSString *)dataName
             AccessKeyId:(NSString *)AccessKeyId
         AccessKeySecret:(NSString *)AccessKeySecret
           SecurityToken:(NSString *)SecurityToken
              bucketName:(NSString *)bucketName
             contentType:(NSString *)contentType
                endpoint:(NSString *)endpoint
                progress:(OSSNetworkingUploadProgressBlock )progressBlock
                 Success:(void(^)(OSSAppendObjectResult * result))success
                 failure:(void(^)(NSError * error))failure;

@end
